package com.wh.hotel.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.wh.hotel.enums.strategy.PriceStrategyTypeEnum;
import com.wh.hotel.model.HotelPricingStrategy;
import com.wh.hotel.param.StatusChangeParam;
import com.wh.hotel.po.PriceHitStrategyPo;
import com.wh.hotel.po.SuitHotelRoomPo;
import com.wh.hotel.vo.HotelPriceStrategyVo;

import java.util.Date;
import java.util.List;

/**
 * @author luweije
 */
public interface HotelPriceStrategyService {
    HotelPricingStrategy savePriceStrategy(HotelPriceStrategyVo hotelPriceStrategyVo);

    Boolean updateStrategyStatus(StatusChangeParam statusChangeParam);

    IPage<HotelPriceStrategyVo> list(HotelPriceStrategyVo hotelPriceStrategyVo);

    HotelPriceStrategyVo detail(HotelPriceStrategyVo strategyVo);

    List<PriceHitStrategyPo> hitPriceStrategy(SuitHotelRoomPo suitHotelRoomPo, List<Date> calendar,
                                              PriceStrategyTypeEnum strategyTypeEnum);

    void hitAndUpdatePriceStrategy(SuitHotelRoomPo suitHotelRoomPo, List<Date> calendar,
                          PriceStrategyTypeEnum strategyTypeEnum);

    void updatePriceCalendar(List<PriceHitStrategyPo> priceHitStrategyPoList);
}
